<?php
// +----------------------------------------------------------------------
// | 跃飞 [ 将来的你一定会感激现在奋斗的自己 ]
// +----------------------------------------------------------------------
// | Author: 钟贵廷
// +----------------------------------------------------------------------
// | Author URI: https://git.oschina.net/yeafy
// +----------------------------------------------------------------------
// | weChat:gt845272922  qq:845272922
// +----------------------------------------------------------------------

/**
介绍：提供一个创建一系列相关的相互依赖对象的接口，而无需指定它们具体的类。它和工厂方法模式的区别就在于所创建对象的复杂度上。抽象工厂和简单工厂、工厂方法相比是最具一般性的。
场景：接着我们的pizza工厂，不过现在上头又增加了需求。他希望我们在中国pizza下面有番茄酱和沙拉酱两种口味，而美国pizza下面也有有番茄酱和沙拉酱两种口味。如果使用的是工厂方法模式，那么我们就需要再添加4种工厂分布制作不同的产品。
概念：
1. 产品树：中国番茄酱pizza和中国沙拉酱pizza处于同一等级结构（产品树），US番茄酱pizza和US沙拉酱pizza也处于同一等级结构（产品树）
2. 产品族：位于不同产品等级结构中功能相关联的产品组成的家族。中国番茄酱pizza与US番茄酱pizza属于同一产品族，中国沙拉酱pizza与US沙拉酱pizza属于同一产品族
优点：工厂方法模式针对的是一个产品等级结构；而抽象工厂模式则是针对的多个产品等级结构。
 */


namespace app\yeafy\abstractFactory\demo1;


interface IPizza
{
    /**
     * 描述:加水
     * @author 钟贵廷
     * @WeChat gt845272922
     * @qq 845272922
     * @return mixed
     */
    public function addWater();

    /**
     * 描述:加米粉
     * @author 钟贵廷
     * @WeChat gt845272922
     * @qq 845272922
     * @return mixed
     */
    public function addFlour();
}